package cao_shengjie;
//用java实现循环队列的出队和入队操作
//用时20分钟 感觉对循环队列的队满条件以及进队出队 队头队尾的处理还不是很熟练

class Dui//定义一个队 英语不好。。。。
{
    private int front;//队头
    private int rear;//队尾
    private int []data;//队中元素
    public Dui(int length)//利用构造方法完成队列的初始化
    {
        this.front=this.rear=0;//初始时队头队尾都为0
        this.data=new int[length];
    }
    public void enterDui(int data)//入队方法
    {
         if(this.front==(this.rear+1)%this.data.length)//队满
        {
            System.out.println("队列已满无法进行入队操作");
        }
        else
        {  //入队操作

            this.data[this.rear]=data;//入队
            this.rear=(this.rear+1)%this.data.length;//rear++
            System.out.println("进队成功!");
        }
    }
    public void outDui()
    {       int a;//出队元素
            if(this.rear==this.front)//队空条件
            {
                System.out.println("队空无法进行出队操作！");
            }
            else
            {  //出队操作
                a=this.data[this.front];//出队
                this.front=(this.front+1)%this.data.length;//相当于普通队列front++
                System.out.println("出队成功出队元素为:"+a);
            }
    }


}

public class Q2 {
    public static void main(String args[])
    {
        Dui d=new Dui(30);
        d.enterDui(1);
        d.enterDui(2);
        d.enterDui(3);
        d.outDui();
        d.outDui();
        d.outDui();






    }

}
